/*	

原作者：程序猿梓燚、一只小肥羊12581
原文链接：https://blog.csdn.net/fzy20110826/article/details/140540750 ;
https://blog.csdn.net/F_hawk189/article/details/112094875


*/	

#include <windows.h>	
#include <iostream>	
#include <iomanip>	
#include <stdio.h>	
#include <stdlib.h>	
 	
// 全屏/隐藏标题栏	
void full_screen()	
{	
	HWND hwnd = GetForegroundWindow();	
 	
	int cx = GetSystemMetrics(SM_CXSCREEN);	
	int cy = GetSystemMetrics(SM_CYSCREEN);	
 	
	LONG l_WinStyle = GetWindowLong(hwnd, GWL_STYLE);	
	SetWindowLong(hwnd, GWL_STYLE, (l_WinStyle | WS_POPUP | WS_MAXIMIZE) & ~WS_CAPTION & ~WS_THICKFRAME & ~WS_BORDER);	
	SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, cx, cy, SWP_FRAMECHANGED);	
}	
 	
// 隐藏光标	
void HideTheCursor()	
{	
	CONSOLE_CURSOR_INFO cciCursor;	
	HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);	
 	
	if (GetConsoleCursorInfo(hStdOut, &cciCursor))	
	{	
		cciCursor.bVisible = FALSE;	
		SetConsoleCursorInfo(hStdOut, &cciCursor);	
		SetConsoleCursorInfo(hStdOut, &cciCursor);	
	}	
}	

HHOOK hook_hwnd_keyboard = NULL;
HHOOK hook_hwnd_mouse = NULL;
HMODULE g_module;
 
// Êó±êÊÂ¼þ
LRESULT CALLBACK MyHookFunMouse(int nCode, WPARAM wParam, LPARAM lParam)
{
	// Êó±êËùÓÐÊÂ¼þ¶¼²»´¦Àí
	return 1;
}
 
// ¼üÅÌÊÂ¼þ
LRESULT CALLBACK MyHookFunKeyBoard(int nCode, WPARAM wParam, LPARAM lParam)
{
	PKBDLLHOOKSTRUCT pVirKey = (PKBDLLHOOKSTRUCT)lParam;
 
	if (nCode >= 0)
	{
		// °´¼üÏûÏ¢
		switch (wParam)
		{
		case WM_KEYDOWN:
		case WM_SYSKEYDOWN:
		case WM_KEYUP:
		case WM_SYSKEYUP:
			switch (pVirKey->vkCode)
			{
			case VK_LWIN:
			case VK_RWIN:
				return 1;
				break;
			}
			return 1;
			break;
		}
	}
 
	return CallNextHookEx(hook_hwnd_keyboard, nCode, wParam, lParam);
}

using namespace std;	
int main()	
{	
	full_screen();	
	HideTheCursor();	
 	
	for (double i = 0; i <= 100; i += 0.01)	
	{	
		HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);	
 	
		cout << " A problem has been detected and Windows has been shut down to prevent damage to your computer.\n\n";	
		cout << " *** STOP: 0x0000000A (0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF)\n\n";	
		cout << " Error code 0x0000000A indicates an IRQL_NOT_LESS_OR_EQUAL error.\n";	
		cout << " This typically occurs when a driver attempts to access a memory location at an incorrect IRQL level.\n";	
		cout << " The IRQL (Interrupt Request Level) is a hardware-related priority level used by the CPU to handle interrupts.\n";	
		cout << " When a driver operates at an IRQL that's too high for the memory access it's attempting,\n";	
		cout << " it can cause this critical error and potentially crash the system.\n";	
		cout << " If this is the first time you've seen this Stop error screen, restart your computer.\n";	
		cout << " If this screen appears again, follow these steps:\n";	
		cout << " Check to make sure any new hardware or software is properly installed.\n";	
		cout << " If this is a new installation, ask your hardware or software manufacturer for any Windows updates you might need.\n";	
		cout << " If problems continue, disable or remove any newly installed hardware or software. Disable BIOS memory options such as caching or \n shadowing.\n";	
		cout << " If you need to use Safe Mode to remove or disable components, restart your computer, press F8 to select Advanced Startup Options, \n and then select Safe Mode.\n\n";	
		cout << " Technical Information:\n";	
		cout << " *** BEGINNING OF DUMP OF PHYSICAL MEMORY\n";	
		cout << " *** MEMORY.DMP\n";	
		cout << " *** END OF DUMP OF PHYSICAL MEMORY\n";		
	}	
	Sleep(10000);
	system("color 0f");
	Sleep(100);
	system("cls");
	cout<<"/";Sleep(250);cout<<".";Sleep(250);cout<<".";Sleep(250);cout<<"."<<endl;
	Sleep(750);
	system("cls");
	cout<<"BIOS setup";Sleep(850);
	system("cls");
	system("color 07");Sleep(50);
	system("color 0f");
	cout<<"A=FDD [A]  C=HDD [C]  F6 ComDtct  F8 RomBoot\n";
	cout<<"DOS/32A warning (9003): real mode interrupt vector had been modified: INT 00h"<<endl;
	for(int p;p<=100;p++)
	{
		cout<<"C:\>";
		cin>>a; //strcmp!!!
		cout<<"\n";
		Sleep(500);
	}
	return 0;	
}